package hong.jun.FeignClient;
//用来调用用户服务的Feign的客户端接口

import feign.hystrix.FallbackFactory;
import hong.jun.domain.User;
import hong.jun.fallback.OrderClientHystrixFallbackFactory;
import hong.jun.fallback.OrderFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;


//@FeignClient(value = "user1-server",fallback = OrderFeignClientFallback.class)
@FeignClient(value = "user1-server",fallbackFactory  = OrderClientHystrixFallbackFactory.class)
public interface OrderFeignClient {
    //Feign通过  @FeignClient("user-server") 得到 ： http://user-server/
    //通过 @RequestMapping(value = "/user/{id}" 得到 ：http://user-server/user/{id}
    //这个 {id}会被替换成 方法参数值
    //注意：建议这个方法和目标服务的controller方法一样，直接拷贝过来
    //五同一不同：
    //1. 服务名要和目标服务的名字相同
    //2.方法的url必须和目标controller方法的url相同
    //3.请求方式 method ：必须和目标controller方法的method
    //4.返回值必须和目标controller方法的返回值
    //5.方法的参数 必须和目标controller方法的参数相同
    //6.方法名可以不同
    @GetMapping(value = "/user1/{id}")
    User touser (@PathVariable("id")long id);
}
